package initialization.overloading; 
 // : initialization/Overloading.java
// Demonstration of both constructor
// and ordinary method overloading.
import static net.mindview.util.Print.print;

/**
 * 重载构造器
 * @title Tree
 * @author liujiaze@zbj.com
 * @date 2017年7月28日 下午5:38:03
 * @since v1.0.1
 */
class Tree {
    int height;

    Tree() {
        print("Planting a seedling");
        height = 0;
    }

    Tree(int initialHeight) {
        height = initialHeight;
        print("Creating new Tree that is " + height + " feet tall");
    }

    void info() {
        print("Tree is " + height + " feet tall");
    }

    void info(String s) {
        print(s + ": Tree is " + height + " feet tall");
    }
}


public class Overloading {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            Tree t = new Tree(i);
            t.info();
            t.info("overloaded method");
        }
        // Overloaded constructor:
        new Tree();
    }
} /*
   * Output:
   * Creating new Tree that is 0 feet tall
   * Tree is 0 feet tall
   * overloaded method: Tree is 0 feet tall
   * Creating new Tree that is 1 feet tall
   * Tree is 1 feet tall
   * overloaded method: Tree is 1 feet tall
   * Creating new Tree that is 2 feet tall
   * Tree is 2 feet tall
   * overloaded method: Tree is 2 feet tall
   * Creating new Tree that is 3 feet tall
   * Tree is 3 feet tall
   * overloaded method: Tree is 3 feet tall
   * Creating new Tree that is 4 feet tall
   * Tree is 4 feet tall
   * overloaded method: Tree is 4 feet tall
   * Planting a seedling
   */// :~
